package com.lagou.dao;

import com.lagou.pojo.Person;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.repository.query.Param;

import java.util.List;

@SuppressWarnings("all")
public interface PersonDao extends Neo4jRepository<Person, Long> {

	/**
	 * cql查询
	 * 可选方式：@Query("match(p:Person) where p.money>{0} return p")
	 */
	@Query("match(p:Person) where p.money>{money} return p")
	public List<Person> findPersonByCql(@Param("money") double money);

	/**
	 * 查询与指定节点有2度以内关系的所有节点
	 *
	 * @param name 指定节点的名字
	 */
	@Query("match p=(p1:Person {name:{name}})-[*1..2]-(p2:Person) return p")
	public List<Person> findNodeByRelation(@Param("name") String name);

	/**
	 * 查询两个节点之间的最短路径
	 *
	 * @param startName 开始节点的名字
	 * @param endName   结束节点的名字
	 */
	@Query("match p=shortestpath((p1:Person {name:{startName}})-[*]-(p2:Person {name:{endName}})) return p")
	public List<Person> findShortestPath(@Param("startName") String startName, @Param("endName") String endName);
}
